package com.mall.admin.controller;

import com.mall.admin.service.PmsProductAttributeService;
import com.mall.commons.utils.PageResult;
import com.mall.commons.utils.R;
import com.mall.domain.PmsProductAttribute;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/productAttribute")
public class PmsProductAttributeController {

    @Autowired
    private PmsProductAttributeService pmsProductAttributeService;

    /**
     * 根据商品分类的id获取商品属性及属性分类
     * @param productCategoryId
     * @return
     */
    @GetMapping("/attrInfo/{productCategoryId}")
    public R productCategory(@PathVariable Integer productCategoryId){
        List<Map<String ,Integer>>mapList=pmsProductAttributeService.productCategory(productCategoryId);
        return R.success(mapList);
    }

    /**
     * 添加商品属性信息
     * @param productAttribute
     * @return
     */
    @PostMapping("/create")
    public R create(@RequestBody PmsProductAttribute productAttribute){
        pmsProductAttributeService.create(productAttribute);
        return R.success(null);
    }

    /**
     * 批量删除商品属性
     * @param ids
     * @return
     */
    @PostMapping("/delete")
    public R delete(@RequestParam("ids")List<Long>ids){
        pmsProductAttributeService.deleteAttributeByIds(ids);
        return R.success(null);
    }

    /**
     * 根据分类查询属性列表或参数列表
     * @param cid
     * @param type
     * @param pageNum
     * @param pageSize
     * @return
     */
    @GetMapping("/list/{cid}")
    public R list(@PathVariable Integer cid,
                  Integer type,
                  @RequestParam(defaultValue = "1")Integer pageNum,
                  @RequestParam(defaultValue = "10")Integer pageSize){
       PageResult pageResult= pmsProductAttributeService.list(cid,type,pageNum,pageSize);
       return R.success(pageResult);
    }

    /**
     * 修改商品属性信息
     * @param id
     * @param productAttribute
     * @return
     */
    @PostMapping("/update/{id}")
    public R updateId(@PathVariable Integer id,@RequestBody PmsProductAttribute productAttribute){
        pmsProductAttributeService.updateAttribute(Long.valueOf(id), productAttribute);
        return R.success(null);
    }

    /**
     * 查询单个商品属性
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public R productAttributeById(@PathVariable Integer id){
        PmsProductAttribute productAttribute=pmsProductAttributeService.productAttributeById(id);
        return R.success(productAttribute);
    }
}
